home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2008 January / Cybermycha 1_2008.iso / Data.cab / _2C14B729F75A49BD9CE431DA8AF8129C < prev    next >
Encoding:
Text File  |  2004-05-31  |  2.2 KB  |  114 lines

  1.  
  2. regc(2, "COMBINED_XFORM")
  3. regc(6, "MODEL_XFORM")
  4.  
  5. regc(12, "FOG_PARAMS")
  6.  
  7. regc(13, "CAMERA_POS_MS")
  8. regcn(14, "DIRECTIONAL_DIR_MS", 0)
  9.  
  10. regc(20, "TEXTURE2_XFORM")
  11. regc(24, "TEXTURE3_XFORM")
  12.  
  13. regc4f(30, 0.0, 0.0, 0.0, %sunvisibility)
  14. // ------------ c40 - c70 reserved
  15. !include("vs_spot_consts.inc")
  16.  
  17. vshader("
  18.  
  19. #define point        v0
  20. #define point1        v4
  21. #define normal        v1
  22. #define tangent        v2
  23. #define tcoord        v3
  24. #define weight        v5
  25.  
  26. #define fogp    c12
  27. #define ldir    c14
  28. #define cpos    c13
  29.  
  30.     vs_1_1
  31.  
  32. #include    <cardef.h>
  33. #include    <fog.inc>
  34.  
  35.     dcl_position0    point
  36.     dcl_position1    point1
  37.     dcl_normal        normal
  38.     dcl_tangent        tangent
  39.     dcl_texcoord    tcoord
  40.     dcl_blendweight weight
  41.  
  42.     def c0, SPECULARPOW, 0, 0, 0
  43.     def    c1, 1, 0, SCRATCHTHRESHOLD, FRESNELSCALE
  44.  
  45.     ; morphing
  46.     mov r1, point
  47.     sub  r0, point1, r1
  48.     mad  r0, weight.x, r0, r1
  49.     ; output position
  50.     m4x4    oPos, r0, c2
  51.     ; output DamageLevel
  52.     sge oT1.x, weight.x, c1.z
  53.     ; E in model space
  54.     add r2, cpos, -point
  55.  
  56.       ; fresnel
  57.     dp3 r6.w, r2, r2
  58.     rsq r6.w, r6.w
  59.     mul r6.xyz, r2, r6.w
  60.  
  61.     dp3    r6.w, r6, normal
  62.     mad r6.w, r6.w, -r6.w, c1.x  // -dot(E, N)*dot(E, N)+1 = 1- pow(dot(E, N),2)
  63.     mul    r6.w, r6.w, r6.w        //f^2
  64.     ; output fresnel
  65.     mul oD1.w, r6.w, c1.w
  66.  
  67.     ; R = reflect E
  68.     dp3 r5.w, r2, normal
  69.     add r6.w, r5.w, r5.w
  70.     mad r6.xyz, normal, r6.w, -r2 // dot(E, N)*2 *N - E
  71.  
  72.     ; output cubemap
  73.     m3x3    oT4, -r6, c6
  74.  
  75.     ; normalize E
  76.     dp3 r6.w, r6, r6
  77.     rsq r6.w, r6.w
  78.     mul r6.xyz, r6, r6.w
  79.  
  80.     dp3        r4.x, normal, ldir        ; diffuse N*L
  81.     dp3        r4.y, ldir, r6        ; specular L*R
  82.     mov        r4.w, c0.x              ; specular pow
  83.     lit        r3, r4
  84.  
  85.     ; output diffuse
  86.     mov        oD0.w, r3.y   //  sun
  87.     ; output specular
  88.     mul        oD1.xyz, r3.z, c30.w    //sunvisibility
  89.  
  90. ;------------------------------------------
  91. // spot lights
  92. // used r0 - r2
  93. #if VS_SPOTLIGHTS
  94. #include <vs_spot_func.inc>
  95. #endif
  96. ;----------------------------
  97.     ; output texcoords
  98.     mov        oT0, tcoord           // color
  99.  
  100.     ; terrain lightmap texgen (from model space)
  101.     dp4        oT2.x, point, c20
  102.     dp4        oT2.y, point, c21
  103.  
  104.     ; clouds texgen (from model space)
  105.     dp4     oT3.x, point, c24
  106.     dp4        oT3.y, point, c25
  107.  
  108.     ; calc fog
  109.        dp4    r0.x, point, c4
  110.        FOG(r0.x, fogp, r10)
  111.  
  112. ")
  113.  
  114.